// Copyright 2025 The Open Brush Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

using TiltBrush;
using UnityEngine;

public class ButtonHighlightThrobber : MonoBehaviour
{
    [SerializeField] private float pulseSpeed = 2f;
    [SerializeField] private float pulseAmount = 0.1f;
    [SerializeField] private Color originalColor = Color.yellow;
    [SerializeField] private Color highlightColor = Color.white;
    [SerializeField] private float colorIntensity = 0.8f;
    [SerializeField] private Vector3 m_OriginalScale = Vector3.one;
    private PanelButton _panelButton;

    void Start()
    {
        _panelButton = GetComponent<PanelButton>();
    }

    void Update()
    {
        float pulseValue = Mathf.Sin(Time.time * pulseSpeed) * 0.5f + 0.5f;
        float scale = 1f + (pulseValue - 0.5f) * 2f * pulseAmount;
        transform.localScale = m_OriginalScale * scale;
        Color targetColor = Color.Lerp(originalColor, highlightColor, pulseValue * colorIntensity);
        _panelButton.SetColor(targetColor);
    }
}
